using System.Collections.Generic;
using System.Text.Json.Serialization;
using JlPay.Sdk.Models;
using JlPay.Sdk.Models.Trans.Dto;

namespace JlPay.Sdk.Models.Trans.B2c
{
    /// <summary>
    /// 微支付响应
    /// </summary>
    public class MicroPayResponse : StandardResponse
    {
        /// <summary>
        /// 商户号
        /// </summary>
        [JsonPropertyName("mch_id")]
        public string? MchId { get; set; }

        /// <summary>
        /// 终端号
        /// </summary>
        [JsonPropertyName("term_no")]
        public string? TermNo { get; set; }

        /// <summary>
        /// 商户订单号
        /// </summary>
        [JsonPropertyName("out_trade_no")]
        public string? OutTradeNo { get; set; }

        /// <summary>
        /// 嘉联订单号
        /// </summary>
        [JsonPropertyName("trade_no")]
        public string? TradeNo { get; set; }

        /// <summary>
        /// 第三方订单号
        /// </summary>
        [JsonPropertyName("transaction_id")]
        public string? TransactionId { get; set; }

        /// <summary>
        /// 支付类型
        /// </summary>
        [JsonPropertyName("pay_type")]
        public string? PayType { get; set; }

        /// <summary>
        /// 交易状态
        /// </summary>
        [JsonPropertyName("trade_state")]
        public string? TradeState { get; set; }

        /// <summary>
        /// 付款银行
        /// </summary>
        [JsonPropertyName("bank_type")]
        public string? BankType { get; set; }

        /// <summary>
        /// 订单金额
        /// </summary>
        [JsonPropertyName("total_fee")]
        public string? TotalFee { get; set; }

        /// <summary>
        /// 应结订单金额
        /// </summary>
        [JsonPropertyName("settlement_total_fee")]
        public string? SettlementTotalFee { get; set; }

        /// <summary>
        /// 现金支付金额
        /// </summary>
        [JsonPropertyName("cash_fee")]
        public string? CashFee { get; set; }

        /// <summary>
        /// 现金支付币种
        /// </summary>
        [JsonPropertyName("cash_fee_type")]
        public string? CashFeeType { get; set; }

        /// <summary>
        /// 汇率
        /// </summary>
        [JsonPropertyName("rate")]
        public string? Rate { get; set; }

        /// <summary>
        /// 支付完成时间
        /// </summary>
        [JsonPropertyName("time_end")]
        public string? TimeEnd { get; set; }

        /// <summary>
        /// 附加数据
        /// </summary>
        [JsonPropertyName("attach")]
        public string? Attach { get; set; }

        /// <summary>
        /// 优惠详情
        /// </summary>
        [JsonPropertyName("coupon_info")]
        public List<CouponInfoDto>? CouponInfo { get; set; }

        /// <summary>
        /// 买家用户标识
        /// </summary>
        [JsonPropertyName("openid")]
        public string? Openid { get; set; }

        /// <summary>
        /// 买家是否关注公众账号
        /// </summary>
        [JsonPropertyName("is_subscribe")]
        public string? IsSubscribe { get; set; }

        /// <summary>
        /// 子商户appid
        /// </summary>
        [JsonPropertyName("sub_appid")]
        public string? SubAppid { get; set; }

        /// <summary>
        /// 子商户openid
        /// </summary>
        [JsonPropertyName("sub_openid")]
        public string? SubOpenid { get; set; }

        /// <summary>
        /// 子商户是否关注公众账号
        /// </summary>
        [JsonPropertyName("sub_is_subscribe")]
        public string? SubIsSubscribe { get; set; }
    }
} 